/**
 * H5选择文件函数
 * @param {Object} options - 选项配置
 * @param {Array} options.accept - 允许的文件类型，如 ['image/*', '.pdf'] 等
 * @param {Boolean} options.multiple - 是否允许多选
 * @returns {Promise} 返回包含选择文件的Promise
 */
function selectFile(options = {}) {
  return new Promise((resolve, reject) => {
    // 创建input元素
    const input = document.createElement('input');
    input.type = 'file';
    input.style.display = 'none';
    
    // 设置accept属性
    if (options.accept && Array.isArray(options.accept)) {
      input.accept = options.accept.join(',');
    }
    
    // 设置multiple属性
    if (options.multiple) {
      input.multiple = true;
    }
    
    // 监听change事件
    input.onchange = (e) => {
      const files = e.target.files;
      if (files.length > 0) {
        resolve(files);
      } else {
        reject(new Error('未选择文件'));
      }
      
      // 清理DOM
      document.body.removeChild(input);
    };
    
    // 监听取消选择事件
    input.onabort = () => {
      document.body.removeChild(input);
      reject(new Error('用户取消选择'));
    };
    
    // 添加到DOM并触发点击
    document.body.appendChild(input);
    input.click();
  });
}

/**
 * 将文件转换为Blob URL
 * @param {File} file - 要转换的文件
 * @returns {string} Blob URL
 */
function fileToBlobUrl(file) {
  return URL.createObjectURL(file);
}

export { selectFile, fileToBlobUrl };
export default selectFile;